// 获取mongoose对象
const mongoose = require("mongoose");
// 获取学生数据模型
const studentModel = mongoose.model("students")

const students = async ({
    // 形参将需要的数据条数，和每页需要显示数量传过来
    // 当前在那一页
    page,
    // 每页需要的数据
    limit
}) => {
    // 转换为数字表示每页需要多少条数据
    // console.log(limit);
    limit = ~~limit
    // 新建一个集合把需要的数据条件返回
    let result = {};
    // 得到所有的数据总数
    result.total = await studentModel.countDocuments();
    // 总条数除以每页多少数据，返回多少页
    result.maxPage = Math.ceil(result.total / limit)
    // 需要返回的数据是从哪里开始，从第几条开始skip((page-1)*limit).populate("class")填充数据（将对应的数据返回）class（跳过多少条）当前页减一乘以需要多少条，返回多少条limit(limit)，.sort({_id:-1})降序。开始执行exec()
    result.rows = await studentModel.find().populate("class").skip((page - 1) * limit).limit(limit).sort({_id:-1}).exec()
    // 将对象里面的所有数据全部返回
    return result
};


// 更新（修改）学生
const update = async (conditions, doc) => {
    // 将要修改的数据发送给数据库，updateOne修改的方法，传需要修改学生的_id（查找条件）,和修改后的数据；
    return await studentModel.updateOne(conditions, doc)
}

// 上传照片需要人照合一。通过_id查询学生
const getOne = async (_id) => {
    return await studentModel.findOne({_id})
}
// 添加学生
const add = async (data) => {
    // 将数据添加到数据库.create(data)data是新增学生的数据。
    const addStu=await studentModel.create(data);

    return addStu
}
// 添加图片
const addImg= async ({_id,url}) => {
    return await studentModel.updateOne({_id},{$push:{
        imgs:url
    }})

}

//删除图片
const reoverImg= async ({_id,url}) => {
    // 调用查询用的方法查找学生找到学生以后吧图片删除
const student= await getOne(_id)
 student.imgs.pull(url)
return await student.save()


}
// loyui学生列表请求、
const studentsSearch = async (data) => {
    // 查询条件返回数据
    let obj = {};
    obj[data.type] = data.val;
    if (obj[data.type]) {
        return await mongoose.model("students").find(obj);
    }
    // 返回全部数据
    return await mongoose.model("students").find();
};
// 暴露上面所有的接口
module.exports = {
    studentsSearch,
    students,
    update,
    add,
    getOne,
    addImg,
    reoverImg,
}